





<!DOCTYPE html>
<html class="writer-html5" lang="zh-CN" >
<head>
  <meta charset="utf-8">
  
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  
  <title>执行代码审查 &mdash; tvm 0.8.dev1982 文档</title>
  

  
  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/css/bootstrap.min.css" integrity="sha384-Gn5384xqQ1aoWXA+058RXPxPg6fy4IWvTNh0E263XmFcJlSAwiGgFAW/dAiS6JXm" crossorigin="anonymous">
  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
  <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
  <link rel="stylesheet" href="../_static/gallery.css" type="text/css" />
  <link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
  <link rel="stylesheet" href="../_static/css/tlcpack_theme.css" type="text/css" />

  
  
    <link rel="shortcut icon" href="../_static/tvm-logo-square.png"/>
  

  
  
  
  
    
      <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
        <script data-url_root="../" id="documentation_options" src="../_static/documentation_options.js"></script>
        <script src="../_static/jquery.js"></script>
        <script src="../_static/underscore.js"></script>
        <script src="../_static/doctools.js"></script>
        <script src="../_static/translations.js"></script>
    
    <script type="text/javascript" src="../_static/js/theme.js"></script>

    
    <script type="text/javascript" src="../_static/js/tlcpack_theme.js"></script>
    <link rel="index" title="索引" href="../genindex.html" />
    <link rel="search" title="搜索" href="../search.html" />
    <link rel="next" title="Committer Guide" href="committer_guide.html" />
    <link rel="prev" title="TVM社区指南" href="community.html" /> 
</head>

<body class="wy-body-for-nav">

   
  <div class="wy-grid-for-nav">
    
    
<header class="header">
    <div class="innercontainer">
      <div class="headerInner d-flex justify-content-between align-items-center">
          <div class="headerLogo">
               <a href="https://tvm.apache.org/"><img src=https://tvm.apache.org/assets/images/logo.svg alt="logo"></a>
          </div>

          <div id="headMenu" class="headerNav">
            <button type="button" id="closeHeadMenu" class="navCloseBtn"><img src="../_static/img/close-icon.svg" alt="Close"></button>
             <ul class="nav">
                <li class="nav-item">
                   <a class="nav-link" href=https://tvm.apache.org/community>Community</a>
                </li>
                <li class="nav-item">
                   <a class="nav-link" href=https://tvm.apache.org/download>Download</a>
                </li>
                <li class="nav-item">
                   <a class="nav-link" href=https://tvm.apache.org/vta>VTA</a>
                </li>
                <li class="nav-item">
                   <a class="nav-link" href=https://tvm.apache.org/blog>Blog</a>
                </li>
                <li class="nav-item">
                   <a class="nav-link" href=https://tvm.apache.org/docs>Docs</a>
                </li>
                <li class="nav-item">
                   <a class="nav-link" href=https://tvmconf.org>Conference</a>
                </li>
                <li class="nav-item">
                   <a class="nav-link" href=https://github.com/apache/tvm/>Github</a>
                </li>
                <li class="nav-item">
                   <a class="nav-link" href=https://tvmchinese.github.io/declaration_zh_CN.html>About-Translators</a>
                </li>
             </ul>
               <div class="responsivetlcdropdown">
                 <button type="button" class="btn-link">
                   ASF
                 </button>
                 <ul>
                     <li>
                       <a href=https://apache.org/>Apache Homepage</a>
                     </li>
                     <li>
                       <a href=https://www.apache.org/licenses/>License</a>
                     </li>
                     <li>
                       <a href=https://www.apache.org/foundation/sponsorship.html>Sponsorship</a>
                     </li>
                     <li>
                       <a href=https://www.apache.org/security/>Security</a>
                     </li>
                     <li>
                       <a href=https://www.apache.org/foundation/thanks.html>Thanks</a>
                     </li>
                     <li>
                       <a href=https://www.apache.org/events/current-event>Events</a>
                     </li>
                     <li>
                       <a href=https://www.zhihu.com/column/c_1429578595417563136>Zhihu</a>
                     </li>
                 </ul>
               </div>
          </div>
            <div class="responsiveMenuIcon">
              <button type="button" id="menuBtn" class="btn-menu"><img src="../_static/img/menu-icon.svg" alt="Menu Icon"></button>
            </div>

            <div class="tlcDropdown">
              <div class="dropdown">
                <button type="button" class="btn-link dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                  ASF
                </button>
                <div class="dropdown-menu dropdown-menu-right">
                  <ul>
                     <li>
                       <a href=https://apache.org/>Apache Homepage</a>
                     </li>
                     <li>
                       <a href=https://www.apache.org/licenses/>License</a>
                     </li>
                     <li>
                       <a href=https://www.apache.org/foundation/sponsorship.html>Sponsorship</a>
                     </li>
                     <li>
                       <a href=https://www.apache.org/security/>Security</a>
                     </li>
                     <li>
                       <a href=https://www.apache.org/foundation/thanks.html>Thanks</a>
                     </li>
                     <li>
                       <a href=https://www.apache.org/events/current-event>Events</a>
                     </li>
                     <li>
                       <a href=https://www.zhihu.com/column/c_1429578595417563136>Zhihu</a>
                     </li>
                  </ul>
                </div>
              </div>
          </div>
       </div>
    </div>
 </header>
 
    <nav data-toggle="wy-nav-shift" class="wy-nav-side fixed">
      <div class="wy-side-scroll">
        <div class="wy-side-nav-search" >
          

          
            <a href="../index.html">
          

          
            
            <img src="../_static/tvm-logo-small.png" class="logo" alt="Logo"/>
          
          </a>

          
            
            
                <div class="version">
                  0.8.dev1982
                </div>
            
          

          
<div role="search">
  <form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
    <input type="text" name="q" placeholder="Search docs" />
    <input type="hidden" name="check_keywords" value="yes" />
    <input type="hidden" name="area" value="default" />
  </form>
</div>

          
        </div>

        
        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
          
            
            
              
            
            
              <p class="caption" role="heading"><span class="caption-text">如何开始</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../install/index.html">安装 TVM</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">贡献者指南</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="community.html">TVM社区指南</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="#">执行代码审查</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#building-trust">建立信任</a></li>
<li class="toctree-l3"><a class="reference internal" href="#community-participation">社区参与</a></li>
<li class="toctree-l3"><a class="reference internal" href="#read-the-code-carefully">仔细阅读代码</a></li>
<li class="toctree-l3"><a class="reference internal" href="#be-respectful">尊重他人</a></li>
<li class="toctree-l3"><a class="reference internal" href="#factors-to-consider-about-code-quality">关于代码质量需要考虑的因素</a></li>
<li class="toctree-l3"><a class="reference internal" href="#consensus-building">Consensus Building</a></li>
<li class="toctree-l3"><a class="reference internal" href="#consistency">Consistency</a></li>
<li class="toctree-l3"><a class="reference internal" href="#additional-recommendations">Additional Recommendations</a><ul>
<li class="toctree-l4"><a class="reference internal" href="#scope-the-prs">Scope the PRs</a></li>
<li class="toctree-l4"><a class="reference internal" href="#label-the-prs-with-area-prefix">Label the PRs with Area Prefix</a></li>
<li class="toctree-l4"><a class="reference internal" href="#deliberate-on-api-and-data-structures">Deliberate on API and Data Structures</a></li>
<li class="toctree-l4"><a class="reference internal" href="#minimize-dependencies">Minimize Dependencies</a></li>
<li class="toctree-l4"><a class="reference internal" href="#concise-implementation">Concise Implementation</a></li>
<li class="toctree-l4"><a class="reference internal" href="#document-lessons-in-code-reviews">Document Lessons in Code Reviews</a></li>
<li class="toctree-l4"><a class="reference internal" href="#learn-from-other-code-reviews">Learn from other Code Reviews</a></li>
<li class="toctree-l4"><a class="reference internal" href="#approve-and-request-changes-explicitly">Approve and Request Changes Explicitly</a></li>
</ul>
</li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="committer_guide.html">Committer Guide</a></li>
<li class="toctree-l2"><a class="reference internal" href="document.html">Write Documentation for TVM</a></li>
<li class="toctree-l2"><a class="reference internal" href="code_guide.html">代码指南和提示</a></li>
<li class="toctree-l2"><a class="reference internal" href="error_handling.html">Error Handling Guide</a></li>
<li class="toctree-l2"><a class="reference internal" href="pull_request.html">Submit a Pull Request</a></li>
<li class="toctree-l2"><a class="reference internal" href="git_howto.html">Git 使用技巧</a></li>
<li class="toctree-l2"><a class="reference internal" href="release_process.html">Apache TVM Release Process</a></li>
</ul>
</li>
</ul>
<p class="caption" role="heading"><span class="caption-text">用户引导</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../tutorial/index.html">User Tutorial</a></li>
<li class="toctree-l1"><a class="reference internal" href="../how_to/index.html">How To Guides</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">开发者引导</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../dev/tutorial/index.html">Developer Tutorial</a></li>
<li class="toctree-l1"><a class="reference internal" href="../dev/how_to/how_to.html">开发者指南</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">架构指南</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../arch/index.html">Design and Architecture</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">主题引导</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../topic/microtvm/index.html">microTVM：裸机使用TVM</a></li>
<li class="toctree-l1"><a class="reference internal" href="../topic/vta/index.html">VTA: Versatile Tensor Accelerator</a></li>
</ul>
<p class="caption" role="heading"><span class="caption-text">参考指南</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../reference/langref/index.html">语言参考</a></li>
<li class="toctree-l1"><a class="reference internal" href="../reference/api/python/index.html">Python API</a></li>
<li class="toctree-l1"><a class="reference internal" href="../reference/api/links.html">Other APIs</a></li>
<li class="toctree-l1"><a class="reference internal" href="../reference/publications.html">Publications</a></li>
<li class="toctree-l1"><a class="reference internal" href="../genindex.html">索引</a></li>
</ul>

            
          
        </div>
        
      </div>
    </nav>

    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">
      
      <nav class="wy-nav-top" aria-label="top navigation" data-toggle="wy-nav-top">
        
            <div class="togglemenu">

            </div>
            <div class="nav-content">
              <!-- tvm -->
              Table of content
            </div>
        
      </nav>


      <div class="wy-nav-content">
        
        <div class="rst-content">
        

          




















<div role="navigation" aria-label="breadcrumbs navigation">

  <ul class="wy-breadcrumbs">
    
      <li><a href="../index.html">Docs</a> <span class="br-arrow">></span></li>
        
          <li><a href="index.html">贡献者指南</a> <span class="br-arrow">></span></li>
        
      <li>执行代码审查</li>
    
    
      <li class="wy-breadcrumbs-aside">
        
            
            <a href="../_sources/contribute/code_review.rst.txt" rel="nofollow"> <img src="../_static//img/source.svg" alt="viewsource"/></a>
          
        
      </li>
    
  </ul>

  
  <hr/>
</div>
          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
           <div itemprop="articleBody">
            
  <div class="section" id="perform-code-reviews">
<span id="code-review-guide"></span><h1>执行代码审查<a class="headerlink" href="#perform-code-reviews" title="永久链接至标题">¶</a></h1>
<p>开源代码由具有不同背景、兴趣和目标的社区维护。因此，提供清晰、文档化和可维护的代码和过程是很重要的。代码审查是一个指导过程，用于共同发现潜在问题，提高代码质量，并训练贡献者和审查者关于代码库及其假设的知识。它也是一种可以确保有多个人可以一起维护一段相关代码的机制。鼓励贡献者在请求审查之前将代码修改至可审查状态。这对于提交者候选人来说尤其重要，因为提交者不仅要参与代码的编写，还要参与代码的审查。</p>
<p>本文档是在开放源码中做代码审查的或指南，请花费一些时间阅读:ref:<a href="#id1"><span class="problematic" id="id2">`</span></a>community_guide`来了解通常的开发过程</p>
<div class="section" id="building-trust">
<h2>建立信任<a class="headerlink" href="#building-trust" title="永久链接至标题">¶</a></h2>
<p>首先也是最重要的是，我们正在建立一个基于信任的社区，这需要时间和努力来建立和维护。我们希望我们的社区成员可以达成共识，以建设性的方式合作。尽管我们都有不同的背景、兴趣和目标，但我们必须共同努力来寻找适合更大社区的解决方案。基于信任的协作也是Apache方式的关键一员，是社区成长中的重要因素，并促进成员成为官方角色。</p>
</div>
<div class="section" id="community-participation">
<h2>社区参与<a class="headerlink" href="#community-participation" title="永久链接至标题">¶</a></h2>
<p>欢迎大家对PRs发表评论。我们鼓励提交者在合并包含重大架构更改的PR之前等待一段时间（如三天）。目的是让人们有时间发言并且表达对复查和参与的兴趣。</p>
<p>记住我们都来自不同的背景在这里很重要。例如，一些社区成员在不同的时区工作，只能在工作时间使用开源软件，或者可能在旅行或在忙于其他事情。在大型项目中工作的一个重要部分是确保有集体的理解，因此没有一个人是累赘。虽然留出时间参与代码评审很重要，但我们也不能阻止所有审查者的所有变数。请记住，帮助人们获得PRs是鼓励更广泛参与的一个很好的方式，特别是对于那些自愿花费时间做贡献的人。</p>
<p>Part of this is trusting and communicating with fellow maintainers that if changes need to be applied in the future
that PR authors will later follow through on their promises. It is the responsibility of committers to listen to all
feedback whether from PMC members or new contributors and consider what actions need to be taken.</p>
</div>
<div class="section" id="read-the-code-carefully">
<h2>仔细阅读代码<a class="headerlink" href="#read-the-code-carefully" title="永久链接至标题">¶</a></h2>
<p>有时，我们可能会快速阅读代码，只了解代码的某些方面。这些类型的注释通常很有帮助而且在社区应该受到欢迎。然而，它们只是执行代码审查的一部分，应该说是更全面反馈的一部分。一个好的、仔细的代码审查需要消耗大量的时间，有时可能比编写实际贡献还要长。</p>
<p>举个例子，如果你的PR只在一些次要方面收到严厉的批评，你的感觉就不会很好，如果在审查过程中你的时间和努力没有得到回报，这也可能就会让人沮丧。在同时作为贡献者和提交者时，学会同情非常重要，可以帮助您成为更有效率的代码审查者和贡献者。</p>
<p>We expect that all committers carefully read and understand the code before signing off. There is a lot of trust involved when
a committer hits the merge button. In the meantime, we acknowledge that sometimes problems slip through, in that case, the
merger is responsible for ensuring the correct follow up actions are taken.</p>
</div>
<div class="section" id="be-respectful">
<h2>尊重他人<a class="headerlink" href="#be-respectful" title="永久链接至标题">¶</a></h2>
<ul class="simple">
<li><p>对所有发表意见的人：发表建设性意见将有助于新的贡献者及时获得他们的PRs，并有助于我们欢迎新成员加入社区。</p></li>
<li><p>对作者来说：审查者应该花大量的时间阅读代码，而仔细的审查可能和从头开始编写代码一样耗费大量的时间。尊重审查意见，并在将来通过帮助审查其他变更来作为回报。</p></li>
</ul>
<p>最重要的是，专注于进行建设性的对话，并在作为审查者进行互动时，尽量假设自己的意图是最好的。如果这个过程中有什么不起作用了，考虑花费一些时间与其他贡献者讨论如何改进过程或交流。</p>
</div>
<div class="section" id="factors-to-consider-about-code-quality">
<h2>关于代码质量需要考虑的因素<a class="headerlink" href="#factors-to-consider-about-code-quality" title="永久链接至标题">¶</a></h2>
<p>高质量的代码对项目的长期成功至关重要。在代码审查期间有许多代码质量方面的因素需要考虑：</p>
<ul class="simple">
<li><p>F0：总体架构。这包括公共模块、关键数据结构和公共接口的定义。选择良好的体系结构对项目的长期成功至关重要。</p></li>
<li><p>F1：架构一致性。通常有多种方法来实现新功能。我们必须确保新特性与以前的总体架构选择一致，并且能和现有的代码进行良好的交互。每一个新特性都会增加项目的复杂性，而一致的设计理念能将新特性带来的复杂性增加程度降至最低，从而使代码的长期维护更加容易。</p></li>
<li><p>F2：代码健壮性和测试覆盖率。确保代码在所有可能的设置（平台）中正确运行，确保新功能的测试覆盖率。清除用户面对的错误的错误消息。</p></li>
<li><p>F3:面向用户的API文档:面向公共用户的API和关键模块接口的文档是必需的。这包括API，出现在公共接口中的数据结构(例如 <cite>include/tvm</cite> 和面向用户的python API)。我们通常鼓励有良好文档记录的代码和为在多个地方使用的内部API提供某种形式的文档，参考F4。</p></li>
<li><p>F4: Code readability. Readability involves multiple aspects: instructive and consistent function names, clear implementation
of the overall flow, descriptive comments for complex code logic and internal functions. Readable code is easier to maintain.</p></li>
</ul>
<p>Architectural design and consistency are the most important factors since they are likely to introduce the most long term technical debt.
As a result, committers should most carefully consider these factors before merging the code.</p>
<p>Test coverage and API documentation are expected for code contributions.</p>
<p>Code readability is relatively a subjective matter compared to the other ones.
Different people have different thoughts on how to best write code. Reviewers should make constructive and actionable comments.
In the meantime, code review should not be used as a way to get others to write code exactly the way you would.
Conversely you should also consider that what you may easily understand, or find acceptable might not work for the larger
community or other members. Use your judgment on what is appropriate based on the content and the scope of the contribution
and where the contributor is coming from.</p>
<p>We follow common <a class="reference internal" href="code_guide.html#code-guide"><span class="std std-ref">代码指南和提示</span></a> when writing code. Style guides help ensure that code is readable and maintainable by others,
long after the original author has moved on. Style guides are more than about code formatting — they also pertain
to the correct way to document code, variable naming, and other conventions that are not enforced by automatic formatters.</p>
</div>
<div class="section" id="consensus-building">
<h2>Consensus Building<a class="headerlink" href="#consensus-building" title="永久链接至标题">¶</a></h2>
<p>Disagreements can happen during code reviews. We encourage building consensus among the people involved. We are working together
and building trust with each other in OSS. The nature of OSS means sometimes we make compromises on less significant issues to
make steady progress and welcome broader participation in the community. Compromise unfortunately means sometimes the world will
not be exactly as we would like, this true even for leaders of the community.</p>
<ul class="simple">
<li><p>Be civil and build consensus through constructive technical-based conversations.</p></li>
<li><p>A committer who owns the area can serve as a shepherd to drive the discussion by taking all the conversations into consideration,
and suggest a resolution with to move forward.</p></li>
<li><p>Because a lot of trust is involved on the committer(shepherd), they should read the PR carefully before sign off. Additionally,
the merger should also take the responsibility to followup in case there are problems caused by the merge.</p></li>
</ul>
</div>
<div class="section" id="consistency">
<h2>Consistency<a class="headerlink" href="#consistency" title="永久链接至标题">¶</a></h2>
<p>A final remark is that we are all human and its hard to always be perfectly consistent. If contributors feel that you didn’t apply these guidelines
in a consistent way it is important to listen and hear folks out. We will constantly have to iterate on processes and guidelines as we evolve as a community.
Our goal is to strive to be consistent and objective but all of us are unfortunately human and imperfect and will need to adjust and learn.</p>
</div>
<div class="section" id="additional-recommendations">
<h2>Additional Recommendations<a class="headerlink" href="#additional-recommendations" title="永久链接至标题">¶</a></h2>
<div class="section" id="scope-the-prs">
<h3>Scope the PRs<a class="headerlink" href="#scope-the-prs" title="永久链接至标题">¶</a></h3>
<p>We recommend authors to send well scoped PRs that are easy to review and revert in case there is a problem.
Authors avoid merging multiple unrelated changes into a single PR and split them into separate PRs.</p>
</div>
<div class="section" id="label-the-prs-with-area-prefix">
<h3>Label the PRs with Area Prefix<a class="headerlink" href="#label-the-prs-with-area-prefix" title="永久链接至标题">¶</a></h3>
<p>When sending pull requests, it is helpful to prefix the PR title with the areas related PR(e.g. use [TIR] for TIR-related changes).
This would help people recognize the related areas and find PRs they are interested in.</p>
</div>
<div class="section" id="deliberate-on-api-and-data-structures">
<h3>Deliberate on API and Data Structures<a class="headerlink" href="#deliberate-on-api-and-data-structures" title="永久链接至标题">¶</a></h3>
<p>A minimum and stable API is critical to the project’s life. A good API makes a huge difference. Always think very carefully about all the aspects including naming, argument definitions and behavior.</p>
<p>When possible, pay more attention still to the proposed API design during code reviews.
Remember, it is easier to improve code implementation, but it is extremely hard to change an API once accepted.
We should treat data structures that are shared across modules(e.g. AST) in the same way.
If/when uncertain, start a conversation with more developers before committing.</p>
<p>Here are some useful principles for designing APIs:</p>
<ul class="simple">
<li><p>Be consistent with existing well-known package’s APIs if the features overlap.
For example, tensor operation APIs should always be consistent with the numpy API.</p></li>
<li><p>Be consistent with existing APIs in the same project.
For example, we should use the same argument ordering across all the optimization passes,
so there is no “surprise” when using them.</p></li>
<li><p>Think about whether the API will change in the future.
For example, we will have more options like loop_unrolling and device placement policy
as we add more optimizations in build. We can package optimization knobs into a build
configuration object. In this way, the build API is stable over time, even though it may be enriched.</p></li>
<li><p>Write documentation. Documentation is mandatory for APIs and sometimes writing documents helps
us to think further about the design as well as whether we need to add further clarifications.</p></li>
<li><p>Minimum. Think about how many lines of code a user has to write to use the API.
Remove layers of abstraction when possible.</p></li>
</ul>
</div>
<div class="section" id="minimize-dependencies">
<h3>Minimize Dependencies<a class="headerlink" href="#minimize-dependencies" title="永久链接至标题">¶</a></h3>
<p>Always be cautious in introducing dependencies. While it is important to reuse code and avoid reinventing the wheel,
dependencies can increase burden of users in deployment. A good design principle is that a feature or function
should only have a dependecy if/when a user actually use it.</p>
</div>
<div class="section" id="concise-implementation">
<h3>Concise Implementation<a class="headerlink" href="#concise-implementation" title="永久链接至标题">¶</a></h3>
<p>Some basic principles applied here: favor vectorized array code over loops, use existing APIs that solve the problem.</p>
</div>
<div class="section" id="document-lessons-in-code-reviews">
<h3>Document Lessons in Code Reviews<a class="headerlink" href="#document-lessons-in-code-reviews" title="永久链接至标题">¶</a></h3>
<p>When you find there are some common or recurring lessons that can be summarized,
add it to the <a class="reference internal" href="code_guide.html#code-guide"><span class="std std-ref">代码指南和提示</span></a>.
It is always good to refer to the guideline document when requesting changes,
so the lessons can be shared to all the community.</p>
</div>
<div class="section" id="learn-from-other-code-reviews">
<h3>Learn from other Code Reviews<a class="headerlink" href="#learn-from-other-code-reviews" title="永久链接至标题">¶</a></h3>
<p>There can be multiple reviewers reviewing the same changes. Many times other reviewers
may spot things you did not find. Try to learn from other code reviews, when possible, document these lessons.</p>
</div>
<div class="section" id="approve-and-request-changes-explicitly">
<h3>Approve and Request Changes Explicitly<a class="headerlink" href="#approve-and-request-changes-explicitly" title="永久链接至标题">¶</a></h3>
<p>The contributor and code owner can request code reviews from multiple reviewers.
Remember to approve changes when your comments are addressed in a code review.
To do so – please click on changes tab in the pull request, then select approve,
or comment on the code and click request changes.
Code owner can decide if the code can be merged in case by case if some of the reviewers
did not respond in time(e.g. a week) and existing reviews are sufficient.</p>
</div>
</div>
</div>


           </div>
           
          </div>
          

<footer>

    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
      
        <a href="committer_guide.html" class="btn btn-neutral float-right" title="Committer Guide" accesskey="n" rel="next">下一个 <span class="fa fa-arrow-circle-right"></span></a>
      
      
        <a href="community.html" class="btn btn-neutral float-left" title="TVM社区指南" accesskey="p" rel="prev"><span class="fa fa-arrow-circle-left"></span> 上一个</a>
      
    </div>

<div id="button" class="backtop"><img src="../_static//img/right.svg" alt="backtop"/> </div>
<section class="footerSec">
    <div class="footerHeader">
      <ul class="d-flex align-md-items-center justify-content-between flex-column flex-md-row">
        <li class="copywrite d-flex align-items-center">
          <h5 id="copy-right-info">© 2020 Apache Software Foundation | All right reserved</h5>
        </li>
      </ul>

    </div>

    <ul>
      <li class="footernote">Copyright © 2020 The Apache Software Foundation. Apache TVM, Apache, the Apache feather, and the Apache TVM project logo are either trademarks or registered trademarks of the Apache Software Foundation.</li>
    </ul>

</section>
</footer>
        </div>
      </div>

    </section>

  </div>
  

    <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.12.9/umd/popper.min.js" integrity="sha384-ApNbgh9B+Y1QKtv3Rn7W3mgPxhU9K/ScQsAP7hUibX39j7fakFPskvXusvfa0b4Q" crossorigin="anonymous"></script>
    <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous"></script>

  </body>
  <script type="text/javascript">
      jQuery(function () {
          SphinxRtdTheme.Navigation.enable(true);
      });
  </script>

  
  
    
    <!-- Theme Analytics -->
    <script>
    (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
      (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
      m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
    })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

    ga('create', 'UA-75982049-2', 'auto');
    ga('send', 'pageview');
    </script>

    
   

</body>
</html>